package ewms.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import ewms.common.core.page.IServicePlus;
import ewms.common.core.page.TableDataInfo;
import ewms.domain.EwmsWasteDetail;
import org.springframework.util.StringUtils;

import java.util.List;

/**
 * 危废信息 业务层
 *
 * @author ruoyi
 */
public interface IEwmsWasteDetailService extends IServicePlus<EwmsWasteDetail> {


	TableDataInfo<EwmsWasteDetail> selectPageWasteDetailList(EwmsWasteDetail wasteDetail);

	/**
	 * 根据条件分页查询危废信息列表
	 *
	 * @param wasteDetail 危废信息信息
	 * @return 危废信息信息集合信息
	 */
	public List<EwmsWasteDetail> selectWasteDetailList(EwmsWasteDetail wasteDetail);

	/**
	 * 通过危废信息ID查询危废信息
	 *
	 * @param wasteId 危废信息ID
	 * @return 危废信息对象信息
	 */
	public EwmsWasteDetail selectWasteById(Long wasteId);


	/**
	 * 校验危废信息名称是否唯一
	 *
	 * @param wasteDetail 危废信息
	 * @return 结果
	 */
	default boolean checkWasteNameUnique(EwmsWasteDetail wasteDetail){
		boolean isUnique = true;
		List<EwmsWasteDetail> list = list(new QueryWrapper<EwmsWasteDetail>().lambda().eq(EwmsWasteDetail::getWasteName, wasteDetail.getWasteName()).eq(EwmsWasteDetail::getDelFlag, "0"));
		if (list.size()>0) {
			if(!StringUtils.isEmpty(wasteDetail.getWasteId())){
				boolean flag = list.stream().filter(item -> !item.getWasteId().equals(wasteDetail.getWasteId())).count() > 1;
				if(flag){
					isUnique = false;
				}
			}else {
				isUnique = false;
			}
		}
		return isUnique;
	}

	/**
	 * 校验危废编码是否唯一
	 *
	 * @param wasteDetail 危废信息
	 * @return 结果
	 */
	default boolean checkWasteCodeUnique(EwmsWasteDetail wasteDetail){
		boolean isUnique = true;
		List<EwmsWasteDetail> list = list(new QueryWrapper<EwmsWasteDetail>().lambda().eq(EwmsWasteDetail::getWasteCode, wasteDetail.getWasteCode()).eq(EwmsWasteDetail::getDelFlag, "0"));
		if (list.size()>0) {
			if(!StringUtils.isEmpty(wasteDetail.getWasteId())){
				boolean flag = list.stream().filter(item -> !item.getWasteId().equals(wasteDetail.getWasteId())).count() > 1;
				if(flag){
					isUnique = false;
				}
			}else {
				isUnique = false;
			}
		}
		return isUnique;
	}

	/**
	 * 新增危废信息信息
	 *
	 * @param wasteDetail 危废信息信息
	 * @return 结果
	 */
	public int insertWasteInfo(EwmsWasteDetail wasteDetail);

	/**
	 * 修改危废信息信息
	 *
	 * @param wasteDetail 危废信息信息
	 * @return 结果
	 */
	public int updateWasteInfo(EwmsWasteDetail wasteDetail);

	/**
	 * 批量删除危废信息信息
	 *
	 * @param wasteIds 需要删除的危废信息ID
	 * @return 结果
	 */
	public int deleteWasteByIds(Long[] wasteIds);
}
